import { SCOKET_URL } from '@/config/query'

function parse(v, h) {
  let msg = JSON.parse(v);
  h(msg);
}

/**
   * 打开一个推送
   * @param {String} token                     消息令牌,通过rpc.message.getDefaultToken()可以获取默认令牌
   * @param {Function} handle                  回调，一个参数:msg;id,context,extras成员，extras中有type、ownerId、rawType，rawType不是undefined就是报警
   * @param {String} [url]                     推送服务器，默认v.lanchengiot.net
   */
export default function (token, handle, url = `${SCOKET_URL}/websocket`) {
  const URL = `${url}/${token.id}/${token.id}_${token.kind}_${token.kind}X${token.companyId}`;
  // const s = new WebSocket(`${url}/${token.id}/${token.id}_${token.kind}_${token.kind}X${token.companyId}`)
  const s = new WebSocket(URL)
  s.onopen = function () {
    // eslint-disable-next-line
    console.log('Socket打开');
  };
  //获得消息事件
  s.onmessage = function (msg = {}) {

    if (typeof msg.data === 'string' && msg.data[0] === '{' && msg.data[msg.data.length - 1] === '}') {
      parse(msg.data, handle)
    }
  };
  // 关闭
  s.onclose = function () {
    // eslint-disable-next-line
    console.log("Socket已关闭");
  };
  //发生了错误事件
  s.onerror = function () {
    console.error("Socket发生错误");
  }

  return s;
}
